package Terminal.Entity.Dominio;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;

public class ESottoprogetto {

	private int id;
	private String nome;
	private String scadenza;
	private String inizio;
	private EMoney budget;
	private List<ETask> tasks= new ArrayList<ETask>();
	private EMoney costo;
	private EManager manager;
	private SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy kk:mm:ss");

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public EMoney getBudget() {
		return budget;
	}

	public void setBudget(EMoney budget) {
		this.budget = budget;
	}

	public EMoney getCosto() {
		return costo;
	}

	public void setCosto(EMoney costo) {
		this.costo = costo;
	}

	@SuppressWarnings("unused")
	public String getInizio()
	{
		return inizio;
	}

	@SuppressWarnings("unused")
	public void setInizio(String inizio) {
		this.inizio = inizio;
	}
	@SuppressWarnings("unused")
	public String getScadenza()
	{
		return scadenza;
	}

	@SuppressWarnings("unused")
	public void setScadenza(String scadenza) {
		this.scadenza = scadenza;
	}
	public Date getDataInizio() {		
		Date dataInizio = new Date();
		
		try {
			dataInizio = dateFormat.parse(inizio);
		} catch (ParseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		return dataInizio;
	}

	public void setDataInizio(Date inizio) {
		this.inizio = dateFormat.format(inizio);
	}	
	public Date getDataScadenza() {	
		Date dataScadenza = new Date();
		
		try {
			dataScadenza = dateFormat.parse(scadenza);
		} catch (ParseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		return dataScadenza;
	}
	public void setDataScadenza(Date scadenza) {
		this.scadenza = dateFormat.format(scadenza);
	}

	public EManager getManager() {
		return manager;
	}

	public void setManager(EManager manager) {
		this.manager = manager;
	}

	public List<ETask> getTasks() {
		return tasks;
	}


	public void setTasks(List<ETask> tasks) {
		this.tasks = tasks;

	}

	public ETask addTask() {
	
		ETask task = new ETask();
		tasks.add(task);
		
		return task;
	}

	/**
	 * Calcola il costo del sottoprogetto, che consta nella somma dei costi dei suoi task  	
	 * @return il costo del task
	 */
	public EMoney calcolaCosto()
	{
		EMoney sommaCosti = new EMoney();
		
		if( ! tasks.isEmpty() )
		{
			for (ETask task : tasks)
			{
				task.calcolaCosto();
				sommaCosti.setPrezzo( sommaCosti.getPrezzo() + task.getCosto().getPrezzo() );
			}
		}
		
		this.setCosto(sommaCosti);
		
		return sommaCosti;
	}
}